/*
 *
 */

#ifndef CMTR_H_
#define CMTR_H_

#include <stdio.h>

typedef struct {
        int iRows;
        int jCol;
        size_t sizeof_item;
        void* data;
} cmtr_matrix;


void cmtr_init(cmtr_matrix* mtx, int sizeof_item,  int i, int j) ;

void cmtr_fill(cmtr_matrix* mtx, void* val) ;

void cmtr_init_identity(cmtr_matrix* mtx, int sizeof_item, int i, void* val1, void* val0) ;

void cmtr_set(cmtr_matrix* mtx, int i, int j, void* val) ;

void* cmtr_get(cmtr_matrix* mtx, int i, int j) ;

void cmtr_destroy(cmtr_matrix* mtx) ;

void cmtr_printf_int(cmtr_matrix* mtx);

void cmtr_fprintf_int(FILE *stream,  cmtr_matrix* mtx);

void cmtr_printf_flt(cmtr_matrix* mtx);

void cmtr_fprintf_flt(FILE *stream,  cmtr_matrix* mtx);

cmtr_matrix* cmtr_transp(cmtr_matrix* mtx);

void cmtr_printf_transp_int(cmtr_matrix* mtx);

void cmtr_fprintf_transp_int(FILE *stream, cmtr_matrix* mtx);

void cmtr_printf_transp_flt(cmtr_matrix* mtx);

void cmtr_fprintf_transp_flt(FILE *stream, cmtr_matrix* mtx);

#endif
